﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LibEBML.Common
{
    public class Matroska
    {
        public EBMLHeader Header { get; set; }
        public Segment Segment { get; set; }
        public EBMLDocument Document { get; protected set; }
        public Matroska(EBMLDocument doc)
        {
            Document = doc;
            Segment = new Segment(doc.Segments[0]);
            Header = new EBMLHeader(doc.Header);
        }
    }

    public class EBMLHeader : MatroskaBase
    {
        public EBMLHeader(EBMLContainer container)
            : base(container)
        {

        }
        protected override void Initialize()
        {

        }
        protected override void InitDefaultValues()
        {
        }
    }

    public abstract class MatroskaBase
    {
        protected EBMLContainer container;
        protected MatroskaBase(EBMLContainer container)
        {
            this.container = container;
            InitDefaultValues();
            Initialize();
        }

        protected abstract void Initialize();

        protected abstract void InitDefaultValues();

    }
}
